之前寫了一個匯率轉換 API 的文章(Fixer API**),**但寫到最後發現,居然沒有台幣的匯率啊。今天研究了 Coinbase API,赫然發現除了使用 Coinbase 平台的服務以外,裡面就已經有各國匯率的 API,還有比特幣、以太幣、萊特幣等等的匯率資料。
在那之前,先簡單介紹一下 Coinbase 這個服務。
Coinbase 是一個加密貨幣交易平台,讓使用者可以在上面設定電子錢包,買賣加密貨幣跟使用加密貨幣收款。
不過我個人對於加密貨幣沒有什麼了解,而且台灣似乎沒辦法使用 Coinbase 這個平台,今天就稍微看看 Coinbase API 能夠做到什麼,以及使用他的換匯 endpoint。
從文件上可以看到,Coinbase API 可以做到的事情還挺多的。比方說
這些功能都在 Coinbase 提供的三種 endpoints 裡,分別是
Coinbase 提供兩種 authentication 方法,
Data endpoint 是不需要 authentication 的,等下會來實作。
要注意的一點,即使是不需要 authentication 的 endpoint,也不是直接放入 request URL 就好。
所有的 request 都必須設定一個 CB-VERSION
的 header,與之對應的 value 要輸入一個版本,使用的格式是時間的 YYYY-MM-DD
。
xhr.setRequestHeader('CB-VERSION','2018-01-01')
如果沒有設定這個 header , API Request 就會失敗。
那現在來使用一下他的 Data Endpoints。
在這邊可以抓到
currencies
: 所有貨幣的資料exchange-rates
:現在的匯率,default 是 USD,會得到所有其他貨幣匯率prices
:比特幣及以太幣的買進、賣出價格time
:API Server 時間那我就簡單地寫個顯示比特幣對美金跟台幣的匯率的APP。
var currency = "BTC";
var url = "https://api.coinbase.com/v2/exchange-rates?currency=" + currency;
var usd = document.querySelector(".usd");
var twd = document.querySelector(".twd");
function makeRequest() {
xhr = new XMLHttpRequest();
xhr.onload = function() {
var response = JSON.parse(this.responseText);
usd.innerHTML = response.data.rates.USD + " USD";
twd.innerHTML = response.data.rates.TWD + " TWD";
};
xhr.open("GET", url, true);
xhr.setRequestHeader("CB-VERSION", "2018-01-01");
xhr.send();
}
makeRequest();